Computer graphics refers to any processing device or program that makes a data processing system, such as computer capable of displaying and manipulating, e.g. drawing, inputting, and outputting, graphics objects. In general, an object may be a self-contained entity that may include both data and procedures to manipulate the data. Graphics objects include shapes and pictures that appear on a display screen. In particular, graphics objects may include lines, texts, polygons' surfaces, images, textures. For example, a three-dimensional picture element (“pixel”), in addition to two-dimensional properties of position, color, and brightness, has a depth property that indicates where the pixel lies along an imaginary Z-axis. When many 3D pixels are combined, each with its own depth value, the result is an image, which appears to be a three-dimensional surface or image. Multiple graphics objects may interact with one another. For example, a solid object may partially hide an object behind it. 3D graphics may support more sophisticated techniques such as ray tracing to apply realistic shadowing to an image.
Accordingly, processes of rendering information to be displayed may require a computer system have considerable memory and processing speed. Typically, a graphics processing unit (“GPU”) is used to process graphics objects that lifts the burden off the Central Processing Unit (“CPU”) that can be used to perform other tasks. The data for the graphics objects may be stored in a video memory. The video display electronics reads the data from the video memory and converts it into the signals to drive the display.
The video memory to store the image to be displayed on a computer display may be a video random access memory (“VRAM”). VRAM, unlike a system memory, e.g., RAM, may be dual ported to allow the display electronics to access it for screen updates in the same time as the processing unit accesses it to provide new data. VRAM is fast enough to supply data to the display electronics at the speed at which the display screen is scanned.
FIG. 1 illustrates prior art handling of graphics objects in video memory 102, such as a video random access memory (“VRAM”). As shown in FIG. 1, a texture object Text 1 and a texture object Text 2 are stored in portions 111 and 112 in host system memory 110, such as dynamic random access memory (“DRAM”). Typically, host system memory 110 is substantially larger than video memory 102. When a first client application needs to use a texture object Text 1 in video memory 102, the texture object Text 1 is copied (“transition 1”) from the host system memory 110 to the video memory 102. The texture object Text 1 is stored in the video memory 102 consuming a portion 113 of the physical space in the video memory 102. When a texture object Text 2 needs to be written in video memory 102 and there is no physical space in video memory 102 for the texture object Text 2, the texture object Text 1 is deleted in operation 3 from the portion 113 to free a physical space in video memory 102 for the texture object Text 2. Then the texture object Text 2 is copied (“transition 2”) from the host system memory 110 and stored into the portion 113 of the video memory 102. Each of the texture object Text 1 and the texture object Text 2 does not need to be moved back to the host system memory 110, because master copies of each of them exist in portions 111 and 112 of host memory 110.
Surface object Surf 1 is created and stored in a portion 115 of the video memory 102, as shown in FIG. 1. Surface object Surf 1 does not have a master copy in host system memory 110, as shown in FIG. 1. This lack of a copy in system memory 110 may happen because the GPU may have created the surface object directly in the GPU memory (rather than the CPU creating it in system memory). Typically, GPU uses a surface object in video memory 102 to draw into the surface. When portion 115 is needed to write other data into video memory 102 and there is no physical space in video memory 102 for the other data, the surface object Surf 1 is forced to move (“transition 4”) to host system memory 110 to free the portion 115 of the physical space in video memory 102. This transition 4 may be considered to be a page out from VRAM to system memory. A portion 114 of the physical space in the host memory 110 is allocated to store the surface object Surf 1. When the surface object Surf 1 needs to be used in the video memory 102 again, the surface object Surf 1 is moved back (“transition 5”) from host system memory 110 to video memory 102. This transition 5 may be considered to be a page in operation for the VRAM (in which the data is paged into the VRAM from the system memory). That means, using the surface object in video memory 102 requires transferring data back and forth across at least one bus connecting video memory 102 and host system memory 110. A bus connecting video memory 102 and host system memory 110 has a finite bandwidth and typically is capable of transferring data with a slow speed of 600 to 800 Megabytes per second (“Mb/s”). Current handling of graphics objects in video memory 102 not only creates a significant bottleneck in data transfer between a video memory and a system memory, but also makes a graphics system very expensive.